#创建集合
s = {1, 2, 3, 4}

ss = set('1234')
print(type(s))
print(type(ss))

#集合添加与删除
#添加元素
s.add(6)
print(s)

#删除第一个元素
s.pop()
print(s)

#删除集合中的元素remove
s.remove(4)
print(s)

#创建空元祖 
tuple1 = ()
print(tuple1)

#创建带有元素的元祖
tuple2 = (1, "a", 3, "hello", 2.2)
tuple3 = (1,)

#创建只有一个元素的元组
print(tuple3)
print(type(tuple3))

#将字符串转变成元组
tuple1 = tuple('hello,world')
print(tuple1)

#将列表转变成元组
list1 = ['Python', 'Java', 'C++', 'C']
tuple2 = tuple(list1)
print(tuple2)

t1 = ('h', 'w', 'g', 'c', 'l')

print(t1[2])
print(t1[-3])
print(t1[0:3:2])
print(t1[-3:-1])

#tuple1 = (12, 34, 56)
#tuple2 = ('abc', 'mn')
#tuple1[0] = 100
#tuple1[0] = 200
t1 = (1, 2, 3)
t2 = ('a', 'b', 'c')
t3 = t1 + t2
#连接组合
print(t3)
#删除元组
t4 = (1,2,3,4,)

#任务
#使用input方法输入联系人姓名，电话，地址，邮件：
#定义元组t1存储上述信息：
#输出t1，查看联系人信息
n = input('请输入联系人姓名')
t = input('请输入联系人电话')
e = input('请输入联系人邮箱')
a = input('请输入联系人地址')
t1 = ("姓名:", "电话:", t, "邮箱:", e, "地址:", a)
print(t1)

# #列表的创建
#1.使用[]直接创建列表
#1.1创建空列表
l1 = []
print(l1)
#1.2创建带有元素的列表
l2 = [1, 2, "python", "java"]
print(l2)
print(type(l2))
#2.1创建空列表
l3 = list()
print(l3)
#2.2将字符串转化成列表
l4 = list("hello world")
print(l4)
#2.3将元组转化成列表
t5 = list("hello")
print(t5)
#2.4将range函数转化成列表
l6 = list(range(5))
print(l6)

#使用索引进行访问单个元素
l7 = [1, 2, 3, 4, 'p', 'w', 'r']
#使用正索引访问p元素
print(l7[4])
#使用负索引访问w元素
print(l7[-2])

#使用切片访问元素的格式：代码如下：
l8 = ['p', 'y', 't', 'h', 'o', 'n']
#使用正数切片，截取索引为2,3,4的元素，步长为1
print(l8[2:5])
#取前三个元素
print(l8[:3])
#去后三个元素
print(l8[3:])
#使用正数切片，截取索引为1-5的元素，步长为2
print(l8[1::2])
#使用负数切片
print(l8[-3:-1])
#步长如果是负数，即从右向左提取元素
print(l8[::-1])

#遍历列表
#使用for循环遍历列表
l9 = [1, 2, 3, 4, "java", 'c']
for i in l9:
    print(i)
# 修改列表元素
l10 = [10, 56, 34, 2, 56, 44, 7]
#将索引为2的元素值修改为100
l10[2] = 100
print(l10)

#修改多个元素
l11 = [10, 56, 34, 2, 56, 44, 7]
#修改第1~4个元素的值（不包括第4个元素）
l11[1: 4] = [45, -56, 98]
print(l11)

#列表中添加元素
#1.append()用于在列表的末尾追加元素
l12 = ['a', 'b', 'c']
l12.append('f')
print(l12)
#列表添加列表
l12.append(['e', 'f'])
print(l12)

#2.extend（）在列表的末尾依次添加多个元素
l13 = ['a', 'b', 'c']
l13.extend('d')
print(l13)
#列表添加列表
l13.extend('world')
print(l13)

#3.insert()在列表的特定位置添加想要添加的特定元素
l14 = ['python', 'c', 'java']
#插入元素，在索引为2处插入go元素
l14.insert(2, 'go')
print(l14)


# #删除元素
# #remove删除
l15 = ['a', 'b', 'c', 'd', 'a']
l15.remove('b')
print(l15)
# #若元素不在列表中，删除会报错
# # #pop()方法用来删除列表中指定索引处的元素
l16 = [10, 2, 4, 6, 8, 'a']
##删除索引为3的元素
l16.pop(3)
##删除最后一个元素
l16.pop()
print(16)

# #del 可以用来删除列表中单个元素或者一段连续的元素
l17 = ['a', 'b', 2, 3, 5, 9]
#del 删除单个元素3
del l17[4]
print(l17)
# del删除一段连续的元素，使用切片形式
del l17[1:3]
print(l17)
#清空列表用clear（）方法
l18 = [6, 8, 'a', 0]
l18.clear()
print(l18)

# 任务
# 创建两个空列表name_list和phone_list，用于存储联系人姓名和电话；
# 向列表中添加联系人信息；
# 输入联系人编号修改信息；
# 输入联系人编号删除信息；
# # 使用clear()清空通讯录。name_list=['张三'， ’李四', '王五', ‘maliu'],phone_list=[123, 236, 258, 598]
name_list = []
phone_list = []
while 1:
    print("菜单:1.添加联系人 2.修改联系人 3.删除联系人")
    chioce = input("请输入选择：")
#1.添加联系人，包括姓名，手机号
    if chioce == "1":
        name_list.append(input("请输入联系人姓名："))
        phone_list.append(input("请输入联系人手机号："))
        print(name_list)
        print(phone_list)
#2.修改联系人信息
    elif chioce == "2":
        num = int(input("请输入联系人编号："))
        if len(name_list) > 0 and num <= len(name_list):
            name_list[num - 1] = input("修改联系人姓名")
            phone_list[num - 1] = input("修改联系电话")
        else:
            print("联系人编号输入有误")
#3.删除联系人信息
    elif chioce == "3":
        num = int(input("请输入联系人编号："))
        if len(name_list) > 0 and num <= len(name_list):
            name_list.pop(num - 1)
            phone_list.pop(num - 1)
        else:
            print("联系人编号输入有误")
    else:
        print("显示联系人信息")
        print(name_list)
        print(phone_list)
# # #查找元素 index（）
#     ls1 = [1, 5, 7, 'a', 'a', 'c', 'b', 6, 4, 1]
#     print(ls1.index('a'))
#     print(ls1.index('a', 4))
#     print(ls1.index('c', 3, 7))
# # # count（）方法用来统计某个元素在列表中出现的次数
#     ls2 = [1, 3, 5, 7, 'a', 8, 3, 'b', 2, 5, 5, 7, 1]
#     print(ls2.count(8))
#     print(ls2.count(5))
#     print(ls2.count('f'))
# # #元素排序 sort（）
# # #1.元素是字符串的排序
#     ls3 = ['1', '3', '44', '23', '99', '88', '56', '233']
# # #默认升序
#     ls3.sort()
#       print(ls3)
# # #降序
#     ls3.sort(reverse=True)
#     print(ls3)
2.元素是数值的排序
    ls4 = [1, 3, 44, 23, 99, 88, 56, 233]
 默认升序
     ls4.sort()
    print(ls4)
降序
     ls4.sort(reverse=True)
     print(ls4)




#字典的创建
#1.使用{}创建字典语法格式
d1 = {'python': 90, "可视化": 89, "英语": 85}
print(type(d1))
# # 使用元组合数字作为key
d2 = {(23, 89):"great", 30:[1, 3, 4]}
print(type(d2))
#创建空字典
d3 = {}
print(type(d3))

# 2.用dict（）方法
d4 = dict(数学=98, 语文=87,英语=89)
print(d4)

#字典元素的访问
#1.字典名【key】
d5 = {'数学': 95, '英语': 92, '语文': 84}
#键存在
print(d5['数学'])
# 键不存在，引发一个keyerror错误
# print（d5['python'])
#2.get()方法来获取指定键对应的值，语法格式：字典名.get(key[,default])
d6 = {'数学': 95, '英语': 92, '语文': 84}
print(d6.get('英语')) #键存在
print(d6.get('python')) #键不存在，返回none
print(d6.get('python', '该键不存在')) #键不存在\

#字典添加键值对
d7 = {'数学': 95, '英语': 92, '语文': 84, 'python': 99}
d7['可视化'] = 100
print(d7)

#字典修改键值对
d8 = {'数学': 95, '英语': 92, '语文': 84, 'python': 99}
d8['语文'] = 100
print(d8)7

#字典删除键值对
#1.使用del关键字
d9 = {'数学': 95, '英语': 92, '语文': 84, 'python': 99}
del d9['语文']
print(d9)
#2.使用pop（）方法
d9.pop('数学')
print(d9)
#导入第三方库pandas，导库用关键字import，用到as关键字
import pandas as pd
#读取excle表数据，获取的是Dateframe对象，读取excle内容，需要函数read_exc（）
df = pd.read_excel(r'C:\Users\Administrator\Desktop\111.xlsx')
print(df)

#写文件到excle
a1 = {'姓名': 'zhangsan', '年龄': 22}
a2 = {'姓名': 'lisi', '年龄': 21}
a3 = {'姓名': 'wangwu', '年龄': 20}
l1 = [a1, a2, a3]
print(l1)
#需要将列表变成DataFrame格式
df1 = pd.DataFrame(l1)
print(df1)
#存数据使用pandas的函数to_excle（），index:索引
df1.to_excel('222.xlsx', index=False)

from docx import Document
doc = Document('2023年国务院政府工作报告.docx')
print(doc)
p = doc.paragraphs
print(p)
print(len(p))
for i in p:
    print(i.text)